#include "../csapp.h"

void *thread(void *vargp);

int test_echoservert(int argc, char **argv)
{
	int listenfd, *connfdp, port, clientlen = sizeof(struct sockaddr_in);
	struct sockaddr_in clientaddr;
	pthread_t tid;
	
	if (argc != 2)
	{
		fprintf(stderr, "usage: %s <port>\n", argv[0]);
		return (0);
	}
	
	port = atoi(argv[1]);
	
	listenfd = Open_listenfd(port);
	while (1)
	{
		connfdp = Malloc(sizeof(int));
		*connfdp = Accept(listenfd, (SA *) &clientaddr, (socklen_t *)&clientlen);
		Pthread_create(&tid, NULL, thread, connfdp);
	}
}


	/* thread routine */
void *thread(void *vargp)
{
	int connfd = *((int *) vargp);
	
	Pthread_detach(pthread_self());
	Free(vargp);
	echo(connfd);
	Close(connfd);
	
	return NULL;	
}



